package com.nf2m.adapter;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.provider.MediaStore;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.view.MotionEventCompat;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.SectionIndexer;
import com.nf2m.R;
import com.nf2m.activity.TarMediaPlayerActivity;
import com.nf2m.draganddrop.ItemTouchHelperAdapter;
import com.nf2m.draganddrop.OnStartDragListener;
import com.nf2m.fragment.NowPlayingFragment;
import com.nf2m.model.Library;
import com.nf2m.model.Songs;
import com.nf2m.preferences.Preferences;
import com.nf2m.service.MediaPlayerService;
import com.nf2m.viewholder.PlaylistSongItemViewHolder;
public class PlaylistSongCursorAdapter extends LibraryCursorAdapter<PlaylistSongItemViewHolder> implements ItemTouchHelperAdapter, SectionIndexer {
private final OnStartDragListener startDragListener;
private final Library library;
@NonNull
private final Context context;
@Nullable
private Cursor songCursor;
private boolean isMove;
private int toPosition;
private int fromPosition;
private final Preferences preferences;
private int playlistId;
public static boolean isItemDismiss;
public PlaylistSongCursorAdapter(@NonNull Context context, Cursor c,
OnStartDragListener startDragListener, Library library) {
super(context, c, MediaStore.Audio.Playlists.Members.TITLE);
this.context = context;
preferences = Preferences.newInstance(context);
songCursor = c;
this.startDragListener = startDragListener;
this.library = library;
}
/**
* Eger şarkı şu an çalınıyorsa play icon görüntülenecek
*/
private void choicePlayIconVisibility(@NonNull PlaylistSongItemViewHolder viewHolder, int audio_id, @Nullable String songPath) {
if (songPath != null && MediaPlayerService.songPath != null) {
Songs songs = new Songs(context);
Cursor songsCursor = songs.getCursor();
if (songsCursor.moveToPosition(preferences.getPrefSongPosition())) {
int id = songCursor.getInt(songCursor.getColumnIndexOrThrow(MediaStore.Audio.AudioColumns._ID));
if (id == audio_id && MediaPlayerService.isPlaying && songPath.equalsIgnoreCase(MediaPlayerService.songPath)) {
viewHolder.ivPPlayIcon.setVisibility(View.VISIBLE);
} else {
viewHolder.ivPPlayIcon.setVisibility(View.GONE);
}
}
}
}
@NonNull
@Override
public PlaylistSongItemViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = inflateCustomViewAndListView(parent, R.layout.playlist_song_custom_layout);
return new PlaylistSongItemViewHolder(itemView, clickListener, longClickListener);
}
@Override
public void onBindViewHolder(@NonNull final PlaylistSongItemViewHolder holder, final int position) {
songCursor = getCursor();
if (songCursor.moveToPosition(position)) {
String pSongTitle = songCursor.getString(getColumnIndex(MediaStore.Audio.Playlists.Members.TITLE));
int songDurationMillis = songCursor.getInt(getColumnIndex(MediaStore.Audio.Playlists.Members.DURATION));
String albumName = songCursor.getString(getColumnIndex(MediaStore.Audio.AudioColumns.ALBUM));
String songDuration = convertMinuteToMillis(songDurationMillis);
int audio_id = songCursor.getInt(getColumnIndex(MediaStore.Audio.Playlists.Members._ID));
String songPath = songCursor.getString(getColumnIndex(MediaStore.Audio.Playlists.Members.DATA));
holder.tvPSongTitle.setText(pSongTitle);
holder.tvPSongDuration.setText(songDuration);
holder.tvPSongAlbumTitle.setText(albumName);
holder.ivDragItem.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, @NonNull MotionEvent event) {
if (MotionEventCompat.getActionMasked(event) == MotionEvent.ACTION_DOWN) {
startDragListener.onStartDrag(holder);
isMove = true;
playlistId = songCursor.getInt(songCursor.getColumnIndexOrThrow(MediaStore.Audio.Playlists.Members.PLAYLIST_ID));
}
return false;
}
});
choicePlayIconVisibility(holder, audio_id, songPath);
holder.itemView.setActivated(isPositionChecked(position));
}
}
@Override
public int getItemCount() {
songCursor = getCursor();
return songCursor.getCount();
}
@Override
public void onItemMove(int fromPosition, int toPosition) {
if (isMove) {
this.fromPosition = fromPosition;
}
isMove = false;
this.toPosition = toPosition;
notifyItemMoved(fromPosition, toPosition);
}
@Override
public void onItemDismiss(int position) {
songCursor.moveToPosition(position);
String id = songCursor.getString(songCursor.getColumnIndexOrThrow(MediaStore.Audio.Playlists.Members._ID));
library.removeSongInPlaylist(library.getUri(),
MediaStore.Audio.Playlists.Members._ID + " IN (" + id + ")", null);
notifyItemRemoved(position);
isItemDismiss = true;
if (position == preferences.getPrefSongPosition() &&
NowPlayingFragment.play_state.equalsIgnoreCase(NowPlayingFragment.PAUSE)) {
Intent playIntent = new Intent(MediaPlayerService.ACTION_PLAY);
context.sendBroadcast(playIntent);
NowPlayingFragment.play_state = NowPlayingFragment.PLAY;
}
}
@Override
public void onItemIdle() {
if (fromPosition != toPosition) {
library.moveSongInPlaylist(playlistId, fromPosition, toPosition);
}
}
}